﻿unit Points;

interface

type
  TPoint = record
    X : Double;
    Y : Double;
  end;
  PPoint = ^TPoint;

//2 自定义排序
function Compare(Point1, Point2: Pointer): Integer;


procedure InitPoint(var Point:TPoint;X,Y:Double);

implementation

procedure InitPoint(var Point:TPoint;X,Y:Double);
begin
  Point.X := X;
  Point.Y := Y;
end;


//2 排序 按升值排序
function Compare(Point1, Point2: Pointer): Integer;
begin
    // 这里根据你的需求编写排序逻辑
    // 返回值为负数表示 Item1 在 Item2 之前，返回值为正数表示 Item1 在 Item2 之后，返回值为零表示相等
    // 注意：此处的比较函数应该根据 TList 存储的具体类型进行类型转换
  if(PPoint(Point1)^.X>PPoint(Point2)^.X) then
  begin
    Result := 1;
    exit;
  end
  else if(PPoint(Point1)^.X<PPoint(Point2)^.X) then
  begin
    Result := -1;
    exit;
  end;
  if(PPoint(Point1)^.Y>PPoint(Point2)^.Y) then
  begin
    Result := 1;
    exit;
  end
  else if(PPoint(Point1)^.Y<PPoint(Point2)^.Y) then
  begin
    Result := -1;
    exit;
  end;
  Result := 0;

end;

end.
